8. VÝRAZY, PODMIENKY, RIADENIE PROGRAMU
V tejto časti sa oboznámime s výrazmi, medzi inými aj s logickými, t.j. s podmienkami. Ďalej sa budeme venovať vetveniu programu v závislosti od určitých podmienok.
8.1 Výrazy
Každý výraz pozostáva z činiteľov a operátorov. Výraz môže pozostávať aj z jediného činiteľa a každý činiteľ môže byť ďalším výrazom. Sú jedno- a dvojzložkové operátory.
Činiteľom môže byť:
¨ Premenná
¨ Konštanta
¨ Hodnota funkcie
¨ Výraz
Napr.: | |
| Alfa |
| Sin(Alfa) + 5 |
| Ln(Sqrt(A)-6)*3 |
| -98E4 |
| (J<5) Or (J>10) |
| Not (Sqrt(N)=0) |
Pre každý operátor sú určené pravidlá, že aké činitele môžu byť na jeho ľavej a pravej strane. Výsledok operácie má tiež svoj typ podľa činiteľov. Pascal je prísne typizovaný jazyk, t.j. všetko má svoj typ. O type konštánt Turbo Pascal rozhoduje, typ premenných určuje programátor. Aj funkcie a výrazy majú svoj typ a teda je jednoznačne určený aj typ výsledku.
Pre určenie typu celočíselných konštánt môže dobre poslúžiť nasledujúca tabuľka:
 |
Typ výsledku operácií *, MOD, DIV, + a - je uvedený v nasledujúcej tabuľke:
 |
K tomu aby sme určili typ výsledku, musíme poznať aj prioritu operácií.
- Najvyššiu prioritu majú znamienka + a - , a operácia NOT.
- V druhom rade sa vykonajú "násobenia":
* / DIV MOD AND SHL SHR
- Potom nasledujú operácie "sčítania":
+ - OR XOR
- Najnižšiu prioritu majú operácie porovnávania:
= <> < <= > >=
Operácie, nachádzajúce sa v jednej skupine - sú rovnocenné, majú rovnakú prioritu. V prípade operácií s rovnakou prioritou operácie sa vykonávajú zľava doprava. Toto platí, ak nepoužívame zátvorky. Ak použijeme zátvorky, potom najprv sa vždy vykonajú operácie v zátvorke.
Pozor na hranice jednotlivých typov!
Nasledujúci program ukazuje, ako ľahko sa môžeme dopustiť chyby ak zabudneme na hranice typov:
 |
Na obrazovke sa objaví: 40000 a 7232 - prečo? V druhom prípade sa najprv vyhodnotí zátvorka. V zátvorke je 40000*2=80000 je už za hranicou definície typu Word a teda sa oreže - dostaneme 80000-65536=14464, polovička čoho je 7232.
Každý výraz musíme naplánovať:
- Musíme zvážiť aké sú prípustné hodnoty.
- Musíme overiť, či sa v procese vyhodnotenia výrazov nedôjde k "podrazu".
Sú dve cesty, ako sa vyvarovať takých situácií. Jedna z nich je používať typy premenných s väčším rozpätím, ale potom nešetríme pamäť ani strojový čas. Hoci pri dnešných rýchlych počítačoch to nie je až taký veľký problém. Druhá možnosť je umelo zaistiť v kritických miestach prechod na vhodný typ. Napr. násobiť reálnou hodnotou (čiastočný výsledok bude reálnym číslom) a potom ho pretransformovať na potrebný typu.
Ak priradzujeme premennej výraz, potom výsledok po vyhodnotení musí byť kompatibilný s typom premennej ktorému ho chceme priradiť. Nesúlad typov zistí už prekladač a oznámi to nám. Pozor na parametre podprogramov a funkcií. Sú také prípady, keď nemôžeme použiť výraz ako parameter.
Konštantným výrazom nazývame také výrazy, ktoré neobsahujú premenné. Vyhodnotiť ich môže už prekladač. Napr.:
Const | |
| Cislo = 40.2 ; |
| Vyraz1 = 5.6E-2*2 ; |
| Vyraz2 = Round(Cislo)*8 ; |
|